Consul 的參數設定有三種方式: Environment Variables、Command-line Options與Configuration Files.
Environment Variables: 設定在OS環境變數裡,Consul會讀取環境變數來做為預設值。
Note
:Command-line Options與Configuration Files的優先權是大於Environment Variables,Command-line Options又大於Configuration Files.Command-line Option: 參數透過指令設定,當所需的設定越來越多時,會不容易閱讀與維護。
Configuration Files: 支援HCL與JSON,設定檔結構化,容易閱讀與維護,此外部分參數的修改可以直接reload生效。
Note
:當有多個設定檔時,Consul會依據命名的順序載入,例如: acl.hcl 會在 server_config.hcl前處理,後處理的設定檔會合併到前面的,如有重複的參數,則後面會覆蓋前面。這三種支援的參數多寡不同,使用的方式情境也不同,例如”telemetry”就只有configuration file有,所以今天會介紹使用Configuration Files來設定Consul.
在開始前我們先新增三個目錄給Consul使用,分別是conf, logs, data.
conf: 放置設定檔,ACL,Policy,Service register,Configuration Entries等等。
logs: 放置Consul server logs.
data: 放置Consul啟動會存放的資料。
編輯我們的設定檔,命名為consul-server.hcl,設定檔支援json與Hashicorp的hcl兩種,這裡以hcl示範。
# consul-server.hcl
server = true
bootstrap_expect = 1
ui = true
datacenter = "ithome"
data_dir = "/home/ec2-user/consul/data"
disable_update_check = true
enable_local_script_checks = true
node_name = "consul-server-01"
client_addr = "10.168.1.175"
bind_addr = "10.168.1.175"
connect {
enabled = true
}
log_level = "DEBUG"
log_file = "/vault/hashicorp/consul/logs/"
log_rotate_duration = "24h"
log_rotate_max_files = 0
server: 告訴Consul這個agent要作為server的腳色,如果設為false則為client的腳色。
bootstrap_expect: 預計要啟動幾個server,若為三台Consul server做HA, 則設定為3.
ui: 開啟web UI的功能。
datacenter: 設定datacenter的名稱,沒設定的話預設是”dc1”.
data_dir: 用來儲存Consul放資料的地方。
disable_update_check: 更新檢查。
enable_local_script_checks: 啟用本地端設定檔腳本檢查。
node_name: 給定名稱,預設是使用hostname.
client_addr: 提供給外部連線Consul使用的IP, 例如: Web UI, HTTP等,預設是”127.0.0.1”
bind_addr: Consul cluster內部溝通用的IP,預設是”0.0.0.0”
connect {enabled = true} : 在Consul cluster中,設定該agent是否允許連線。
log_level: 預設是”info”,另外還有"trace", "debug", "info", "warn", and "err”.
log_file: log file 路徑,檔名會是consul-{timestamp}.log
log_rotate_duration: log紀錄多久時間rotate一次。
log_rotate_max_files: 設定最多rotate幾個檔案。
設定檔都編寫完成後,可以使用參數”-config-dir” 帶入設定檔:
$ consul agent -config-dir=./conf/
啟動後我們連線到 http://10.168.1.175:8500 ,看到下面的頁面,就成功了。
.如果沒有背景執行,你會看到log一直印出來,要停止按ctrl+c
即可。
.有背景執行,先ps -ef |grep consul
,再kill -9 PID
即可。